package functions 
{	/**
	 * @author admin
	 */
	public class FunctionNode 
	{
		public var funcname : String = "func"; // this is how this function will be stored in symboltable
		// and thus how it is retrieved when we refer to it in XML
		public static var FUNCTION:String = "FUNCTION";
		public static var SPECIALFUNCTION:String = "SPECIALFUNCTION";
		public static var MACRO:String = "MACRO";
		
		//What's with all that?
		//Well, FUNCTIONS have all their args evaluated *before* being passed to the function.
		// MACROs are well defined too -- NONE of the args are evaluated before being passed,
		// and the macro's job is to transform those args somehow into evaluatable code
		// which will be evaluated *after* the macro returns its code.
		
		// So what's a special function?
		// Let's look at lambda.
		// It takes two lists:
		// the variablenames, and the function body.
		// we want to evaluate the first, but not the second.
		// hmm. neither a macro nor a function.
		// the solution? 
		// evaluate NONE of the args before, but also DON'T evaluate the code it returns.
		// either FUNCTION nor MACRO.
	
		public var functiontype:String = FUNCTION;
		
		public function getValue( args : XML, scope : Object) : XML
		{
			var returnXML:XML;
				
			trace("args.children()[0] = " + args.children()[0]);
			trace("******")
			trace("args.children()[1] = " + args.children()[1]);	
				
			return returnXML;
		}	}}